# -*- coding: UTF-8 -*-

# 第一个函数
print "\n------ 第一个函数 ------"


def hello(name):
    print name
    return "你好，" + name


print hello("jj")

# 不可变对象： 整数、字符串、元组
# 可变对象： 列表，字典
# 传不可变对象
print "\n------ 传不可变对象 ------"


def fun1(a):
    a = 10
    print a


b = 1
fun1(b)
print b

print "\n------ 传可变对象 ------"


def fun2(list):
    list[0] = "a"
    print list


p_list = [1, 2, 3, 4]
fun2(p_list)
print p_list

# 参数
# 必备参数 | 关键字参数 | 默认参数 | 不定长参数
# 必备参数
print "\n------ 必备参数 ------"


def fun3(name):
    print name


# fun3() # 报错

# 关键字参数
print "\n------ 关键字参数 ------"


def fun4(str, num):
    print str, num


fun4(num=1, str="jj")

# 默认参数
print "\n------ 默认参数 ------"


def fun5(name, age=18):
    print name, age


fun5("jj")

# 不定长参数
print "\n------ 不定长参数 ------"


def fun6(name, *args):
    print name, args


fun6("aa", "b", "c", "d")

# 匿名函数
print "\n------ 匿名函数lambda ------"
sum = lambda a, b: \
    a + b
print sum(1, 2)

# return
print "\n------ return语句 ------"


def fun7(a, b):
    return a + b


print fun7(1, 3)

# 全局变量和局部变量
print "\n------ 全局变量和局部变量 ------"
a = "jj"  # 全局变量


def fun8():
    b = "hh"  # 局部变量
    print a + b


fun8()
